<?php
class Tamanho_item extends UDEntity {
	
	protected $cod_tam_item_auto;
	protected $cod_tamanho_auto;
	protected $cod_item_auto;
	protected $preco_item;
	protected $peso_item;
	protected $obs;

	protected $tamanho;
	protected $item;

	public function __construct($id = ''){
		parent::__construct();

		$this->cod_tam_item_auto 	= '';
		$this->cod_tamanho_auto 	= '';
		$this->cod_item_auto 		= '';
		$this->preco_item 			= 0;
		$this->peso_item 			= '';
		$this->obs 		 			= '';

		if(!empty($id)){
			$this->carregar($id);
		}
	}

	//
	// Métodos próprios
	//
	public function hasID(){
		return !empty($this->cod_tam_item_auto) && $this->cod_tam_item_auto > 0;
	}

	//
	// Implementação métodos abstratos
	//

	public function carregar($id){
		$this->CI->db->where('cod_tam_item_auto', $id);
		$query = $this->CI->db->get('tamanho_item');

		if($query && $query->num_rows() == 1){
			foreach ($query->result() as $tam) {
				$this->cod_tam_item_auto 	= $tam->cod_tam_item_auto;
				$this->cod_tamanho_auto 	= $tam->cod_tamanho_auto;
				$this->cod_item_auto 		= $tam->cod_item_auto;
				$this->preco_item 			= $tam->preco_item;
				$this->peso_item 			= $tam->peso_item;
				$this->obs 		 			= $tam->obs_item;
			}
		}
	}

	public function gravar(){
		$validacao = $this->validar();
		
		if ($validacao[0]){
			if($this->hasID()){
				//Update
				$data = array(
					'cod_tamanho_auto' => $this->getCodTamanho(),
					'preco_item' => $this->getPreco(),
					'peso_item' => $this->getPeso(),
					'obs_item' => $this->getObs()
					);

				$this->CI->db->where('cod_tam_item_auto', $this->cod_tam_item_auto);
				$this->CI->db->update('tamanho_item', $data);
			}else{
				//Insert
				$data = array(
					'cod_tamanho_auto' => $this->getCodTamanho(),
					'cod_item_auto' => $this->getCodItem(),
					'preco_item' => $this->getPreco(),
					'peso_item' => $this->getPeso(),
					'obs_item' => $this->getObs()
					);

				$query = $this->CI->db->insert('tamanho_item', $data);
				$this->cod_tam_item_auto = $this->CI->db->insert_id();
			}			
		}

		return $validacao;
	}

	public function validar(){
		$validacao = array(true,'');

		if($this->hasID()){
			//update
			if(empty($this->cod_tamanho_auto)){
				$validacao = array(false, 'Informe o tamanho.');
			}else{
				$this->CI->db->from('tamanho_item');
				$this->CI->db->where('cod_tamanho_auto', $this->getCodTamanho());
				$this->CI->db->where('cod_item_auto', $this->getCodItem());
				$this->CI->db->where('cod_tam_item_auto !=', $this->cod_tam_item_auto);

				if($this->CI->db->count_all_results() > 0){
					$validacao = array(false, 'Tamanho já cadastrado.');
				}	
			}
		}else{
			//insert
			if(empty($this->cod_tamanho_auto)){
				$validacao = array(false, 'Informe o tamanho.');
			}else{
				$this->CI->db->from('tamanho_item');
				$this->CI->db->where('cod_tamanho_auto', $this->getCodTamanho());
				$this->CI->db->where('cod_item_auto', $this->getCodItem());

				if($this->CI->db->count_all_results() > 0){
					$validacao = array(false, 'Tamanho já cadastrado.');
				}	
			}
		}

		return $validacao;
	}	


	//
	// Getters e Setters
	//

	public function getCodTamanhoItemAuto(){
		return $this->cod_tam_item_auto;
	}
	
	public function setCodTamanho($codTamanho){
		$this->cod_tamanho_auto = $codTamanho;
	}

	public function getCodTamanho(){
		return $this->cod_tamanho_auto;
	}

	public function setCodItem($codItem){
		$this->cod_item_auto = $codItem;
	}

	public function getCodItem(){
		return $this->cod_item_auto;
	}

	public function getTamanho(){
		if(empty($this->cod_tamanho_auto)){
			return;
		}

		if(!isset($this->tamanho) OR empty($this->tamanho)){
			$this->tamanho = new Tamanho($this->getCodTamanho());
		}

		return $this->tamanho;
	}

	public function getItem(){
		if(empty($this->cod_item_auto)){
			return;
		}

		if(!isset($this->item) OR empty($this->item)){
			$this->item = new Item($this->getCodItem());
		}

		return $this->item;
	}


	public function setPreco($preco){
		$this->preco_item = $preco;
	}

	public function getPreco(){
		return $this->preco_item;
	}

	public function setPeso($peso){
		$this->peso_item = $peso;
	}

	public function getPeso(){
		return $this->peso_item;
	}

	public function setObs($obs){
		$this->obs = $obs;
	}

	public function getObs(){
		return $this->obs;
	}

}